package com.example.leetcode.c1_c100.c14;
/**
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 *
 * 如果不存在公共前缀，返回空字符串 ""。
 *
 * 示例 1:
 *
 * 输入: ["flower","flow","flight"]
 * 输出: "fl"
 * 示例 2:
 *
 * 输入: ["dog","racecar","car"]
 * 输出: ""
 * 解释: 输入不存在公共前缀。
 * 说明:
 *
 * 所有输入只包含小写字母 a-z 。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/longest-common-prefix
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

/** 最长公共前缀
 * @author zhanpengguo
 * @date 2020-08-29 20:10
 */
public class Solution {

    public static void main(String[] args) {
        Solution solution = new Solution();
        String[] strs = new String[]{"dog","racecar","car"};
        System.out.println(solution.longestCommonPrefix(strs));
    }

    public String longestCommonPrefix(String[] strs) {
        if (strs == null || strs.length == 0) {
            return "";
        }
        if (strs.length == 1) {
            return strs[0];
        }
        StringBuilder result = new StringBuilder();
        int i = 0;
        String first = strs[0];
        while (true) {
            if (first.length() - 1 < i) {
                return result.toString();
            }
            char now = first.charAt(i);
            for (String str : strs) {
                if (str.length() - 1 < i) {
                    return result.toString();
                }
                if (str.charAt(i) != now) {
                    return result.toString();
                }
            }
            result.append(now);
            i++;
        }
    }
}
